#ifndef _FIG_Enemy_BOSS_H_
#define _FIG_Enemy_BOSS_H_

#include "fig_transform_enemy.h"

class FIGBossAttackMoveManager;



class FIGEnemyBoss	: public FIGTransformEnemy
{
public:

    friend class FIGBossAttackMoveGoDown;
	friend class FIGBossAttackMoveRightLeft;
	friend class FIGBossAttackMoveCircle;

	enum BOSS_STATE
	{
		BOSS_STATE_COMEIN,
		BOSS_STATE_CONVERSATION,
		BOSS_STATE_Tranform,    		
		BOSS_STATE_ATTACK,
		BOSS_STATE_DYING,

		
	};

	FIGEnemyBoss(
				FIGEnemyCraft::ENEMY_TYPES EnemyType
					);


	
	virtual void				Tick(float dt);
	virtual void				ReSpawn();
	virtual void				GotDamage(float Amount,FIGBullet* pBullet, bool Force);


		
protected:

	virtual	void				OnDie();	
	virtual void				Tick_Attack(float dt);
	virtual void				OnSecondaryWeaponShoot(){};
	virtual void				OnStartDying();	
	virtual bool				CanTransformBackAttack() const { return true; };

	float						m_LevelCompleteCounter;
	void						NextState();
	
	BOSS_STATE				    m_BossState;
	float						m_ComeInStopY;
	static ui::UIProgress*		m_pUIBossHealth;
	static ui::UIWidget*		m_pUIDecoRight;
	static ui::UIWidget*		m_pUIDecoLeft;
	

	math::Counter				m_BossHealthFillCounter;
	math::Counter				m_UIAppearCounter;

	math::Counter				m_SecondaryWeaponCounter;  	
	float						m_ConversationCounter;
	
};

#endif